﻿using BootyBay.StoreAppMgmtCore.Models;
using BootyBay.StoreAppMgmtCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace BootyBay.StoreAppMgmtCore
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IAgentSvc" in both code and config file together.
    [ServiceContract]
    public interface IAgentSvc
    {
 
        [OperationContract]
        List<StoreAppMgmtTask> GetAppMgmtTasksInQueueForUser(string userName);

        /// <summary>
        /// Required Properties: 
        /// Install & Update: AppPackageName,AppPublisherName, PackageCertLocationUrl, PackageLocationUrl
        /// Uninstall: AppPackageName,AppPublisherName,
        /// </summary>
        /// <param name="mgmtTask"></param>
        /// <returns></returns>
        [OperationContract]
        Guid SubmitClientAppOperationRequest(StoreAppMgmtTask mgmtTask);

        [OperationContract]
        StoreAppMgmtTask GetTaskStatus(Guid taskID);

        /// <summary>
        /// Required Properties: 
        /// mgmtTask.AppVerInfoID, mgmtTask.UserName, mgmtTask.AppPackageName, mgmtTask.AppPublisherName, mgmtTask.AppVersion
        /// </summary>
        /// <param name="mgmtTask"></param>
        /// <returns></returns>
        [OperationContract]
        AppLocalStatus GetAppLocalStatus(StoreAppMgmtTask mgmtTask);

    }
}
